#导入模块
from flask import Flask, render_template, request, jsonify
from flask_sqlalchemy import SQLAlchemy

#创建 Flask 应用并配置数据库
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///garbage.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

# 定义垃圾分类数据库模型
class Garbage(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    category = db.Column(db.String(50), nullable=False)

    def __repr__(self):
        return f'<Garbage {self.name}>'

# 创建数据库
with app.app_context():
    db.create_all()

    # 添加垃圾分类数据
    if not Garbage.query.first():  # 检查是否已经有数据
        # 垃圾分类字典
        garbage_categories = {
            '可回收垃圾': [
                "报纸", "纸箱", "书本", "杂志", "干净纸张", "利乐包装牛奶盒", "饮料盒",
                "塑料瓶", "矿泉水瓶", "洗发沐浴瓶", "食用油桶", "塑料碗盆", "泡沫塑料",
                "易拉罐", "金属包装盒", "金属厨具", "金属餐具", "铝箔", "玻璃瓶", "酒瓶",
                "碎玻璃", "调料瓶", "窗玻璃", "茶几玻璃", "玻璃杯", "玻璃工艺品", "旧衣服",
                "床上用品", "窗帘", "桌布", "书包", "塑料卡片", "KT板", "塑料玩具",
                "塑料衣架", "施工安全帽", "亚克力板", "密胺餐具", "电线", "插头", "手机",
                "数码相机", "电路板", "耳机", "饮料瓶盖", "食品包装盒", "塑料花盆",
                "塑料文件夹", "塑料文件盒"
            ],
            '干垃圾': [
                "餐巾纸", "卫生间用纸", "尿不湿", "猫砂", "狗尿垫", "污损纸张", "烟蒂",
                "干燥剂", "污损塑料", "尼龙制品", "编织袋", "防碎气泡膜", "一次性餐具",
                "一次性手套", "大骨头", "硬贝壳", "硬果壳", "硬果实", "毛发", "灰土",
                "炉渣", "橡皮泥", "太空沙", "带胶制品", "花盆", "毛巾", "内衣", "袜子",
                "竹篮", "竹筷", "牙签", "镜子", "陶瓷碗", "陶瓷盆", "笔", "眼镜",
                "打火机", "伞", "隐形眼镜", "照片", "离心纸", "蜡纸", "转印纸",
                "塑料光面废纸", "卫生巾", "婴儿纸尿布", "餐巾纸", "烟头", "尘土",
                "一次性筷子"
            ],
            '湿垃圾': [
                "剩菜剩饭", "瓜皮果核", "花卉绿植", "中药药渣", "食材废料", "过期食品",
                "肉类碎骨", "鱼骨", "茶叶渣", "咖啡渣", "蛋壳", "椰子肉", "西瓜皮",
                "桔子皮", "苹果皮", "葡萄枝", "西瓜籽", "榴莲核", "菠萝蜜核", "甘蔗皮",
                "玉米衣", "蔬菜叶子", "火锅汤底", "鱼鳞", "虾壳", "鱿鱼", "面粉",
                "风干食品", "宠物饲料", "糕饼", "糖果", "红枣", "肉干", "冲泡饮料",
                "奶粉", "面包", "豆类", "米", "面", "牛奶", "酸奶", "奶酪", "坚果",
                "干香菇", "桂圆干", "茶叶渣", "中药渣", "花卉", "枝叶", "家养绿植"
            ],
            '有害垃圾': [
                "废电池", "废荧光灯管", "废药品", "废油漆", "废溶剂", "废矿物油",
                "废化妆品", "废胶片", "废相纸", "废荧光灯管", "废温度计", "废血压计",
                "废充电电池", "废扣子电池", "碱性电池", "锂电池", "镍镉电池", "老鼠药",
                "杀虫剂", "消毒剂", "染发剂", "洗甲水", "过期指甲油", "废机油", 
                "水银温度计", "水银血压计", "废农药", "废杀虫剂罐", "废X光片",
                "废硒鼓", "废墨盒", "废铅酸电池", "废镍氢电池", "废氧化汞电池",
                "废含汞荧光灯管", "废含汞节能灯", "废含汞卤素灯", "废含汞灯泡",
                "废化学试剂", "废显影液", "废定影液", "废紫外线灯管", "废节能灯",
                "废日光灯管", "废卤素灯泡", "废石棉", "废水银灯", "废石棉瓦",
                "废石棉制品", "废含汞电器开关"
            ]
        }

       
        sample_garbages = []  # 初始化sample_garbages
        for category, items in garbage_categories.items():
            sample_garbages.extend([Garbage(name=item, category=category) for item in items])  # 使用列表解析生成对象

        db.session.bulk_save_objects(sample_garbages)  
        db.session.commit()  # 提交到数据库


@app.route('/', methods=['GET'])
def index():
    return render_template('index.html')

@app.route('/search', methods=['GET'])
def search():
    garbage_name = request.args.get('waste')
    garbage = Garbage.query.filter_by(name=garbage_name).first()
    if garbage:
        return jsonify({'category': garbage.category})
    else:
        return jsonify({'category': None})

if __name__ == '__main__':
    app.run(debug=True,port=5001)
